其他
基于 Java 的浏览器——JxBrowser使用分享
软件介绍
JxBrowser 是一个基于 Java 的浏览器,它使用 Chromium 引擎来提供高性能的网页渲染和丰富的功能。它支持多种 GUI 框架,如 Swing、JavaFX 和 SWT,使得在 Java 应用程序中嵌入浏览器组件变得简单。
JxBrowser 是一个适用于多种用途的嵌入式浏览器,它可以被用于开发混合应用程序、结账和自助服务终端、数字广告、游戏、网页抓取、自动化脚本,以及桌面和平板电脑应用程序。以下是 JxBrowser 在这些不同应用场景中的具体应用:
混合应用程序
JxBrowser 可以被集成到混合应用程序中,为用户提供丰富的网页内容,同时允许开发者利用 Java 和其他后端技术来处理业务逻辑。
结账&自助服务终端
自助服务终端和结账系统可以使用 JxBrowser 来展示网页形式的用户界面,处理交易和信息查询,同时保持用户界面的现代性和易用性。
数字广告
JxBrowser 可以用于创建交互式数字广告,包括那些需要实时更新内容或与用户互动的广告。
游戏
游戏开发者可以使用 JxBrowser 来创建基于网页的游戏,或者在游戏中集成网页内容,例如游戏内商店或社区论坛。
网页抓取
JxBrowser 可以用于开发网页抓取工具,通过模拟用户交互来获取网页数据,支持自动化测试和数据挖掘应用。
自动化
自动化脚本和工具可以利用 JxBrowser 来模拟用户在网页上的操作,进行自动化测试、监控或其他任务。
桌面及平板电脑应用程序
JxBrowser 可以被集成到桌面或平板电脑应用程序中,提供内嵌的网页浏览功能,从而扩展应用程序的功能性。
官方文档
https://jxbrowser-support.teamdev.com/zh/docs/tutorials/ide/intellij-idea.html#%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F
功能和特性
配置文件管理:JxBrowser 允许用户管理 Chromium 配置文件,包括导航历史、cookie、缓存、密码等用户数据。 浏览器实例创建:通过 Profile.newBrowser()
方法可以创建新的Browser
实例。如果使用Engine.newBrowser()
,浏览器将在默认配置文件下创建。浏览器视图嵌入:JxBrowser 可以在 Swing、JavaFX 和 SWT 应用程序中嵌入显示网页内容的可视化组件。 导航功能:支持加载 URL 和文件、过滤导航请求、处理导航历史等。 内容显示:JxBrowser 可以显示各种类型的内容,包括图片、视频、PDF、Flash 等,并支持访问网页的 HTML 内容。 DOM 访问:允许访问 DOM 文档、查找元素、修改 DOM 结构等。 弹出窗口处理:描述了如何处理、显示或抑制弹出窗口。 文件下载管理:提供了管理文件下载、跟踪下载进度、在下载完成时获得通知等功能。 网络功能:包括代理、网络事件、身份验证、TLS、客户端证书身份验证等。 缓存管理:支持多种缓存类型,如 HTTP 缓存、Blink 缓存、HTML5 应用程序缓存等。 Cookie 管理:提供了获取、修改和删除 cookie 的功能。 身份验证处理:支持处理 Proxy、Basic、Digest 或 NTLM 身份验证请求。 插件支持:支持 Chromium 插件,允许获取有关所有已安装和可用的 Chromium 插件的信息。 打印功能:支持使用 JavaScript 或 JxBrowser API 进行网页打印。 密码管理:提供了保存、更新和管理用户在新在线表单中输入的密码的功能。 用户数据配置文件:描述了如何保存、更新和管理用户数据,如输入到网络表单中的名字、地址、电子邮件等。 信用卡管理:介绍了如何保存、更新和管理信用卡信息。 媒体支持:概述了支持的视频和音频格式,描述了如何控制音频、获取有关可用网络摄像头和麦克风等信息。 缩放控制:允许缩放网页内容,并在缩放级别更改时获得通知。 拼写检查器:提供了配置语言以进行拼写检查、在自定义词典中添加或删除单词、禁用拼写检查等功能。 部署和构建:描述了如何在 Java 应用程序中部署 JxBrowser,以及如何使用 JxBrowser 所使用的 Chromium 构建。 日志记录和崩溃转储收集:提供了配置 JxBrowser 日志记录和收集崩溃转储的方法。 JxBrowser 提供了强大的功能和灵活性,使其成为开发高性能、功能丰富的桌面应用程序的理想选择。
Java Swing集成JxBrowser
import static com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED;
import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.view.swing.BrowserView;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class HelloWorld {
public static void main(String[] args) {
// Creating and running Chromium engine.
Engine engine = Engine.newInstance(HARDWARE_ACCELERATED);
Browser browser = engine.newBrowser();
SwingUtilities.invokeLater(() -> {
// Creating Swing component for rendering web content
// loaded in the given Browser instance.
BrowserView view = BrowserView.newInstance(browser);
// Creating and displaying Swing app frame.
JFrame frame = new JFrame("Hello World");
// Close Engine and close the app window.
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
engine.close();
}
});
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
JTextField addressBar = new JTextField("https://www.google.com");
addressBar.addActionListener(e ->
browser.navigation().loadUrl(addressBar.getText()));
frame.add(addressBar, BorderLayout.NORTH);
frame.add(view, BorderLayout.CENTER);
frame.setSize(800, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.navigation().loadUrl(addressBar.getText());
});
}
}
JavaFX集成JxBrowser
import static com.teamdev.jxbrowser.engine.RenderingMode.*;
import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.view.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
/**
* 这个示例演示了如何创建和初始化 Engine,创建 Browser
* 将其嵌入到一个 JavaFX 场景中,并显示现代网络内容,
* 如 YouTube 视频。
*/
public final class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
Engine engine = Engine.newInstance(HARDWARE_ACCELERATED);
Browser browser = engine.newBrowser();
BrowserView view = BrowserView.newInstance(browser);
Scene scene = new Scene(new BorderPane(view), 700, 500);
primaryStage.setTitle("JavaFX BrowserView");
primaryStage.setScene(scene);
primaryStage.show();
browser.navigation().loadUrl(
"https://youtu.be/BO8lX3hDU30");
}
}